const fs = require("fs");
const ws = fs.createWriteStream("test.txt", {
  highWaterMark: 3,
});

let flag = ws.write("1");
console.log(flag);

flag = ws.write("2");
console.log(flag);

// flag为false并不意味当前数据不能写入
flag = ws.write("3");
console.log(flag);

// 可写流执行机制
/*
  1. 第一次调用 write 方法时是将数据直接写入到文件中
  2. 第二次开始 write 方法就是将数据写入至缓存中
  3. 生产速度 和 消费速度 是不一样的， 一般情况下生产速度要比消费速度快很多
  4. 当 flag 为 false 之后并不意味当前次的数据不能被写入了， 但是我们应该告之数据的生产者， 当前的消费速度
    已经更不上生产速度了，所以这个时候， 一般我们会将可读流的模式修改为暂停模式
  5. 当数据生产者暂停之后， 消费者会慢慢消化他内部缓存中的数据， 直到可以再次被执行写入操作
  6. 当缓冲区可以继续写入数据时如何让生产者知道？ drain事件
*/

// 只有flag为false才会执行这个事件
ws.on("drain", () => {
  console.log("111");
});
